#ifndef NETWORK_CLIENT_H
#define NETWORK_CLIENT_H

#include <string.h> // memset
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <queue>
#include <pthread.h>

#include "Network.h"
#include "../utils/data_types.h"

class NetworkClient : public Network
{
    public:
    
        bool Connect(const char *host, const int port);
        
        // :THREADED:
        void Send(NetworkMessage* msg);
        
    protected:
        
        // @Override Network :THREADED:
        void PrepareSet();
        
        // @Override Network :THREADED:
        void HandleActiveSockets();
        
        // @Override Network :THREADED:
        void LostConnectionHandler(int target_sock_fd);
};

#endif
